package com.maimao.goods.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.maimao.model.goods.Brand;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * @author MaoLin Wang
 * @date 2020/12/8 4:42 下午
 */
public interface BrandMapper extends BaseMapper<Brand> {
    /**
     * 多条件搜索
     * @param key 关键词 品牌名/拼音/首字母
     * @param hot 是否热门
     * @param recommend 是否推荐
     * @param status 状态
     * @param ownerId
     */
    List<Brand> selectByParam(@Param("key") String key,
                              @Param("hot") Integer hot,
                              @Param("recommend") Integer recommend,
                              @Param("status") Integer status,
                              @Param("ownerId") String ownerId);

    String selectLogoById(@Param("id") Long id);

    /**
     * 修改logo地址
     */
    int updateLogo(@Param("logo") String logo,@Param("id") Integer brandId);

    /**
     * 修改基本信息
     */
    int updateBase(Brand brand);

    /**
     * 批量更新状态
     */
    void updateStatusBatch(@Param("status") Integer status, @Param("ids") List<Integer> ids);

    /**
     * 修改推荐状态
     */
    int updateRecommend(@Param("id") Long id, @Param("recommend") Integer recommend);

    /**
     * 修改热门状态
     */
    int updateHot(@Param("id") Long id, @Param("hot") Integer hot);

    List<Brand> selectHot();

    /**
     * 查询三级分类下的品牌
     */
    List<Brand> cateBrands(@Param("cid3") Integer cid3);

    String selectNameById(Long id);

    /**
     * 批量查询 只返回关键字段
     */
    List<Brand> selectByIdBatchSimple(@Param("ids") List<Long> brandIds);

    Brand selectNameByIdSimple(Long brandId);

    Brand selectIdLogoNameById(@Param("brandId") Long brandId);

    List<Brand> selectAllValid();

    Brand selectByName(@Param("name") String name);

    int check(@Param("id") Long id, @Param("status") int status,@Param("reason") String reason);

    Brand selectByOwner(@Param("ownerId") Long ownerId);

    int bindCategory(@Param("brandId") Long brandId, @Param("cids") List<Integer> bindCategoryIds);

    int deleteBoundCategory(@Param("brandId") Long brandId, @Param("cids") List<Integer> boundCids);

    Brand selectByOwnerAndCid3(@Param("userId") Long userId,@Param("cid3") Integer cid3);

    Brand selectByShopId(@Param("shopId") Long shopId);
}
